package sio.slam4;

import java.util.Date;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;





@Entity
@Table(name = "Pays")
public class Pays {

  @Id
  @GeneratedValue
  private Long id;

  private String nom;
  private String continent;
  @OneToMany (mappedBy="pays") 
  private Set<Ville> villes; 
  @OneToOne 
  @JoinColumn(name="capitale_ID",unique = true) 
  private Ville capitale;

  // parmi 'Asie', 'Europe', 'Amérique du Nord'', 'Afrique','Océanie',
  // 'Antarctique', 'Amérique d  u Sud')
 
  public Ville getCapitale() {
    return capitale;
  }

  public void setCapitale(Ville capitale) {
    this.capitale = capitale;
  }

  private String codeISO3166; 
  // le code à 2 chiffres utilisé pour les noms de domaine de 
  // premier niveau (fr pour la France, br pour le Brézil, ...)
  
  private Date independance;
  // date de l'indépendance (peut être null)

  
  public Pays() {
  }

  public Pays(String nom, String continent, String codeISO3166,
      Date independance ) {
    super();
    this.nom = nom;
    this.continent = continent;
    this.codeISO3166 = codeISO3166;
    this.independance = independance;
      
   
  }


  public Long getId() {
    return id;
  }

  public void setId(Long id) {
    this.id = id;
  }

  public String getNom() {
    return nom;
  }

  public void setNom(String nom) {
    this.nom = nom;
  }

  public String getContinent() {
    return continent;
  }

  public void setContinent(String continent) {
    this.continent = continent;
  }

  public String getCodeISO3166() {
    return codeISO3166;
  }

  public void setCodeISO3166(String codeISO3166) {
    this.codeISO3166 = codeISO3166;
  }

  @Temporal(TemporalType.DATE)
  @Column(name = "IndYear")
  public Date getIndependance() {
    return independance;
  }

  public void setIndependance(Date indYear) {
    this.independance = indYear;
  }

  public Set<Ville> getVilles() {
    return villes;
  }

  public void setVilles(Set<Ville> villes) {
    this.villes = villes;
  }


  
}
